package com.alan6.distributed.ratelimit.annotation;


import java.lang.annotation.*;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AlaRateLimit {

    /**
     * 限流key，区分不同的方法
     * @return
     */
    String key() default "";

    /**
     * 限流次数
     * @return
     */
    long limit() default 100;

    /**
     * 限流间隔时间
     * @return
     */
    long interval() default 60;

    /**
     * 限流返回，消息形式
     * @return
     */
    String message() default "rate limit error";


    /**
     * 限流返回，对象形式，优先级高于message
     * @return
     */
    Class<?> fallback() default void.class;
}
